K-Nearest Neighbors (KNN) একটি সহজ, জনপ্রিয় এবং শিকড়গত মেশিন লার্নিং অ্যালগরিদম যা Supervised Learning ক্যাটাগরিতে পড়ে। এটি classification এবং regression উভয় কাজের জন্য ব্যবহার করা যায়, তবে এটি সাধারণত classification সমস্যায় বেশি ব্যবহৃত হয়। KNN একটি instance-based অ্যালগরিদম, যেখানে মডেলটি কোনও প্রশিক্ষণ সময়ের মধ্যে তৈরি করা হয় না; বরং এটি পরীক্ষণ ডেটা পয়েন্টের ভিত্তিতে ভবিষ্যদ্বাণী করে।
KNN এর মূল ধারণা
KNN অ্যালগরিদমটি সহজভাবে কাজ করে এবং এর মূল ধারণা হল:
- একটি নতুন (অপরিচিত) ডেটা পয়েন্ট আসার পর, KNN সেটির শ্রেণি বা মান K সংখ্যক সবচেয়ে কাছের (nearest) পয়েন্টের শ্রেণি বা মানের উপর ভিত্তি করে সিদ্ধান্ত নেয়।
- K হলো একটি প্যারামিটার যা নির্ধারণ করে কতগুলি কাছের প্রতিবেশী পয়েন্ট ব্যবহার করা হবে সিদ্ধান্ত নিতে।
- Distance Metric: প্রতিবেশীদের সন্ধানের জন্য সাধারণত Euclidean distance (বা অন্য যেকোনো distance metric) ব্যবহার করা হয়।
KNN অ্যালগরিদমের কাজের প্রক্রিয়া
- নতুন ডেটা পয়েন্ট: একটি নতুন ডেটা পয়েন্ট (যা পূর্বে দেখা হয়নি) আসে।
- কাছের প্রতিবেশী খুঁজে বের করা: নতুন ডেটা পয়েন্টের সবচেয়ে কাছের Kটি প্রতিবেশী ডেটা পয়েন্ট খুঁজে বের করা হয়, যেগুলি প্রশিক্ষণ ডেটা থেকে নেওয়া হয়।
- শ্রেণি নির্ধারণ:
- Classification: Kটি প্রতিবেশী ডেটা পয়েন্টের মধ্যে যে শ্রেণি (class) সবচেয়ে বেশি দেখা যায়, সেটি নতুন ডেটা পয়েন্টের শ্রেণি হিসেবে নির্ধারণ করা হয়।
- Regression: Kটি প্রতিবেশী ডেটা পয়েন্টের মানের গড় নির্ধারণ করা হয় এবং সেটি নতুন ডেটা পয়েন্টের মান হিসেবে ব্যবহৃত হয়।
KNN এর প্রধান সুবিধা
- সহজ এবং সহজে বোঝার মতো: KNN অ্যালগরিদমটি সহজ এবং এর বেসিক ধারণা বোঝা সহজ।
- কোন মডেল ট্রেনিং করার প্রয়োজন নেই: অন্যান্য অ্যালগরিদমের বিপরীতে, KNN অ্যালগরিদমে প্রশিক্ষণের জন্য কোনও অতিরিক্ত সময় বা প্রক্রিয়া প্রয়োজন হয় না, কারণ এটি প্রশিক্ষণের সময় কেবলমাত্র ডেটা সংরক্ষণ করে।
- বিভিন্ন সমস্যায় প্রয়োগযোগ্য: এটি শ্রেণিবিভাগ (classification) এবং সংখ্যা নির্ধারণ (regression) উভয় ক্ষেত্রেই ব্যবহার করা যায়।
KNN এর প্রধান অসুবিধা
- নির্বাচনযোগ্য K মানের উপর নির্ভরশীলতা: KNN অ্যালগরিদমে K প্যারামিটার নির্বাচন অত্যন্ত গুরুত্বপূর্ণ। খুব ছোট K মান অনেক বেশি পরিবর্তনশীলতা সৃষ্টি করতে পারে, আবার খুব বড় K মানেও সঠিক ফলাফল পাওয়া নাও যেতে পারে।
- মেমরি এবং গণনা শক্তির উচ্চ চাহিদা: KNN মেমরিতে সমস্ত ডেটা পয়েন্ট সংরক্ষণ করে রাখে, যা বড় ডেটাসেটে খুব ধীর হতে পারে। এটি অন্যান্য অ্যালগরিদমের তুলনায় অনেক বেশি গণনা শক্তি এবং মেমরি ব্যবহার করে।
- অন্যন্য ফিচারের স্কেল: যদি ডেটাতে বিভিন্ন স্কেলের ফিচার থাকে, তবে KNN অ্যালগরিদমটি তাদের মধ্যে সঠিক দূরত্ব পরিমাপ করতে পারে না। সেক্ষেত্রে ফিচার স্কেলিং প্রয়োজন।
KNN অ্যালগরিদমের কাজের উদাহরণ
ধরা যাক আমাদের কাছে একটি ডেটাসেট আছে, যেখানে দুটি ফিচার রয়েছে: Height (উচ্চতা) এবং Weight (ওজন), এবং আমরা এই ডেটা ব্যবহার করে কোরাস (classification) করতে চাই।
স্টেপ ১: ডেটা তৈরি
import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
# ডেটাসেট তৈরি
data = {
'Height': [150, 160, 170, 180, 190],
'Weight': [50, 60, 65, 70, 80],
'Class': ['Light', 'Light', 'Heavy', 'Heavy', 'Heavy']
}
df = pd.DataFrame(data)
# ফিচার এবং টার্গেট আলাদা করা
X = df[['Height', 'Weight']] # ফিচার
y = df['Class'] # টার্গেট
স্টেপ ২: KNN মডেল তৈরি এবং প্রশিক্ষণ
# KNN মডেল তৈরি
knn = KNeighborsClassifier(n_neighbors=3)
# মডেল প্রশিক্ষণ
knn.fit(X, y)
স্টেপ ৩: নতুন ডেটা পয়েন্টের জন্য পূর্বাভাস করা
# নতুন ডেটা পয়েন্ট
new_data = np.array([[175, 68]])
# পূর্বাভাস
prediction = knn.predict(new_data)
print(f"Predicted Class: {prediction[0]}")
এখানে new_data হলো নতুন একটি ডেটা পয়েন্ট, যার উচ্চতা 175 সেমি এবং ওজন 68 কেজি। KNN অ্যালগরিদমটি K=3 প্রতিবেশীর ভিত্তিতে এটি পূর্বাভাস করবে যে, এটি Heavy শ্রেণির অন্তর্গত।
KNN এর জন্য কিছু গুরুত্বপূর্ণ প্যারামিটার:
- n_neighbors (K): কতটি প্রতিবেশী পয়েন্ট ব্যবহার করা হবে তা নির্ধারণ করে।
- metric (distance metric): কিভাবে দুটি পয়েন্টের মধ্যে দূরত্ব পরিমাপ করা হবে (যেমন, Euclidean distance, Manhattan distance, ইত্যাদি)।
- weights: প্রতিবেশী পয়েন্টগুলির গুরুত্বের ভিত্তিতে সিদ্ধান্ত নেওয়া যাবে। এর মান হতে পারে
uniform(সমান ওজন) বাdistance(দূরত্বের ভিত্তিতে ওজন)।
# KNN মডেল কাস্টমাইজ করা
knn = KNeighborsClassifier(n_neighbors=5, metric='euclidean', weights='distance')
সারাংশ
K-Nearest Neighbors (KNN) একটি সহজ এবং শক্তিশালী মেশিন লার্নিং অ্যালগরিদম, যা classification এবং regression সমস্যায় ব্যবহার করা যায়। এটি নতুন ডেটা পয়েন্টের জন্য K সংখ্যক সবচেয়ে কাছের প্রতিবেশী পয়েন্টের উপর ভিত্তি করে সিদ্ধান্ত নেয়। KNN এর প্রধান সুবিধা হল এটি সহজ এবং ট্রেনিং প্রক্রিয়া ছাড়াই কাজ করে, তবে বড় ডেটাসেটে এটি ধীর হতে পারে এবং K এর মান নির্বাচন একটি গুরুত্বপূর্ণ সিদ্ধান্ত।
Read more